From: Matthieu Gallien Date: Wed, 16 Jul 2025 17:14:26 +0000 (+0200) Subject: feat: test to ensure etag constant means no PROPFIND on a folder X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1^2~13^2^2~5^2~1 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=74746b27f158d5ac2d964647412956a20aeccffb;p=nextcloud-desktop.git feat: test to ensure etag constant means no PROPFIND on a folder should help ensure we send a PROPFIND only when the folder etag changes if some metadata apparently change, this is not enough to send a PROPFIND request Signed-off-by: Matthieu Gallien --- diff --git a/test/testpermissions.cpp b/test/testpermissions.cpp index ee4507c10..0ef689edb 100644 --- a/test/testpermissions.cpp +++ b/test/testpermissions.cpp @@ -926,6 +926,50 @@ private slots: QVERIFY(itemInstruction(completeSpy, "file", CSYNC_INSTRUCTION_REMOVE)); QVERIFY(discoveryInstruction(discovery, "file", CSYNC_INSTRUCTION_REMOVE)); } + + void testChangingPermissionsWithoutEtagChange() + { + FakeFolder fakeFolder{FileInfo{}}; + QObject parent; + + fakeFolder.setServerVersion(QStringLiteral("27.0.0")); + + fakeFolder.remoteModifier().mkdir("groupFolder"); + fakeFolder.remoteModifier().mkdir("groupFolder/simpleChildFolder"); + fakeFolder.remoteModifier().insert("groupFolder/simpleChildFolder/otherFile"); + fakeFolder.remoteModifier().mkdir("groupFolder/folderParent"); + fakeFolder.remoteModifier().mkdir("groupFolder/folderParent/childFolder"); + fakeFolder.remoteModifier().insert("groupFolder/folderParent/childFolder/file"); + + auto groupFolderRoot = fakeFolder.remoteModifier().find("groupFolder"); + setAllPerm(groupFolderRoot, RemotePermissions::fromServerString("WDNVCKRMG")); + + auto propfindCounter = 0; + + fakeFolder.setServerOverride([&propfindCounter](QNetworkAccessManager::Operation op, const QNetworkRequest &request, QIODevice *outgoingData) -> QNetworkReply * { + Q_UNUSED(outgoingData) + + if (op == QNetworkAccessManager::CustomOperation && + request.attribute(QNetworkRequest::CustomVerbAttribute).toString() == QStringLiteral("PROPFIND")) { + ++propfindCounter; + } + + return nullptr; + }); + + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(propfindCounter, 5); + + fakeFolder.setServerVersion(QStringLiteral("31.0.0")); + + auto groupFolderRoot2 = fakeFolder.remoteModifier().find("groupFolder"); + groupFolderRoot2->extraDavProperties = "true"; + + fakeFolder.remoteModifier().insert("groupFolder/simpleChildFolder/otherFile", 12); + + QVERIFY(fakeFolder.syncOnce()); + QCOMPARE(propfindCounter, 8); + } }; QTEST_GUILESS_MAIN(TestPermissions)